package com.qingcloud.task.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qingcloud.task.dto.TaskListDTO;
import com.qingcloud.task.dto.TaskSaveDTO;
import com.qingcloud.task.model.Task;
import com.qingcloud.task.vo.PageVO;
import com.qingcloud.task.vo.TaskInfoVO;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
 * <p>
 * 勘察任务表 服务类
 * </p>
 *
 * @author zhengjibin
 * @since 2022-01-20
 */
public interface TaskService extends IService<Task> {

    Long saveTask(TaskSaveDTO dto);

    TaskInfoVO getTaskInfo(Long taskId);

    PageVO<TaskInfoVO> selectPage(TaskListDTO dto);

    List<TaskInfoVO> selectListByIds(Collection<? extends Serializable> ids);

    /**
     * 修改任务，为空字段不修改
     * @param vo
     */
    void updateTask(TaskInfoVO vo);

    /**
     * 任务转派
     * @param userId 源 执行人id
     * @param toUserId 被转派人id
     */
    void taskTransfer(Long taskId,String userId,String toUserId);

    void receive(Long taskId, String userId);

    /**
     * 完成任务
     */
    void complete(Long taskId, String userId);
}
